package br.com.condominio.controller;

import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.faces.event.AjaxBehaviorEvent;

import br.com.condominio.entity.Apartamento;
import br.com.condominio.entity.Pessoa;
import br.com.condominio.service.PessoaService;

@ViewScoped
@ManagedBean(name = "pessoaBean")
public class PessoaBean extends BaseBean {

	private static final long serialVersionUID = 1L;
	@ManagedProperty("#{pessoaService}")
	private PessoaService model;
	private Pessoa pessoa;
	private List<Pessoa> pessoas;
	private String nomePessoa;
	private boolean editMode;
	
	private Apartamento apartamentoSelecionado;

	public PessoaService getModel() {
		return model;
	}

	public void setModel(PessoaService model) {
		this.model = model;
	}

	public Pessoa getPessoa() {
		if(pessoa == null){
			pessoa = new Pessoa();
		}
		return pessoa;
	}

	public void setPessoa(Pessoa pessoa) {
		this.pessoa = pessoa;
	}

	public void salvar() {
		System.out.println("idf pessoa " + pessoa.getPessoCodigo());
		
		if (pessoa.getPessoCodigo() == null
				|| pessoa.getPessoCodigo().intValue() == 0) {
			pessoa = model.persistPessoa(pessoa);
			pessoa = new Pessoa();
			addInfoMessage("Pessoa criado com sucesso.");
		} else {
			model.updatePessoa(pessoa);
			addInfoMessage("Pessoa alterado com sucesso.");
		}
	}

	public void delete() {
		model.deletePessoa(pessoa);
		if (nomePessoa != null && !nomePessoa.isEmpty()){
			pessoas = model.getPessoasByName(nomePessoa);
		}else{
			pessoas = model.getAllPessoas();
		}

		// return "";
	}

	public void create() {
		this.pessoa = new Pessoa();
		this.editMode = true;
	}

	public void update() {
		this.editMode = true;
	}

	public void cancel() {
		this.editMode = false;
	}

	public void filtrarPessoa(AjaxBehaviorEvent event) {
		if (nomePessoa != null && !nomePessoa.isEmpty()) {
			pessoas = model.getPessoasByName(nomePessoa);
		} else {
			pessoas = model.getAllPessoas();
		}
	}

	public List<Pessoa> getPessoas() {
		if (pessoas == null) {
			pessoas = model.getAllPessoas();
		}
		return pessoas;
	}

	public void setPessoas(List<Pessoa> pessoas) {
		this.pessoas = pessoas;
	}

	public String getNomePessoa() {
		return nomePessoa;
	}

	public void setNomePessoa(String nomePessoa) {
		this.nomePessoa = nomePessoa;
	}

	public boolean isEditMode() {
		return editMode;
	}

	public void setEditMode(boolean editMode) {
		this.editMode = editMode;
	}

	public Apartamento getApartamentoSelecionado() {
		return apartamentoSelecionado;
	}

	public void setApartamentoSelecionado(Apartamento apartamentoSelecionado) {
		this.apartamentoSelecionado = apartamentoSelecionado;
	}
	
}
